package test.kit.hutool._enum;

import cn.hutool.core.util.StrUtil;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;

@Slf4j
@Getter
public enum Validator {
    // 定义
    C1("季度") {
        @Override
        public void checkData(String value, int rowNum, int colNum) {
            if (StrUtil.isEmpty(value)) {
                log.info("数据为空或值非法: {}",  value);
                throw newException(rowNum, colNum);
            }
        }
    },
    C2("课次") {
        @Override
        public void checkData(String value, int rowNum, int colNum) {
            if (StrUtil.isEmpty(value)) {
                log.info("数据为空或值非法: {}",value);
                throw newException(rowNum, colNum);
            }
        }
    },
    C3("课次名称") {
        @Override
        public void checkData(String value, int rowNum, int colNum) {
            if (StrUtil.isEmpty(value)) {
                log.info("数据为空或值非法: {}", value);
                throw newException(rowNum, colNum);
            }
        }
    },
    C4("知识点") {
        @Override
        public void checkData(String value, int rowNum, int colNum) {
            if (StrUtil.isEmpty(value)) {
                log.info("数据为空或值非法: {}", value);
                throw newException(rowNum, colNum);
            }
        }
    },
    C5("难度") {
        @Override
        public void checkData(String value, int rowNum, int colNum) {
            if (StrUtil.isEmpty(value)) {
                log.info("数据为空或值非法: {}", value);
                throw newException(rowNum, colNum);
            }
        }
    },
    C6("首三推荐") {
        @Override
        public void checkData(String value, int rowNum, int colNum) {
            if (StrUtil.isEmpty(value)) {
                log.info("数据为空或值非法: {}", value);
                throw newException(rowNum, colNum);
            }
        }
    },

    C7("切片链接") {
        @Override
        public void checkData(String value, int rowNum, int colNum) {
            if (StrUtil.isEmpty(value)) {
                log.info("数据为空或值非法: {}", value);
                throw newException(rowNum, colNum);
            }
        }
    },
    C8("题库知识图谱") {
        @Override
        public void checkData(String value, int rowNum, int colNum) {
            if (StrUtil.isEmpty(value)) {
                log.info("数据为空或值非法: {}", value);
                throw newException(rowNum, colNum);
            }
        }
    },
    ;

    // 属性
    private final String colName;

    Validator(String colName) {
        this.colName = colName;
    }

    // 方法
    abstract void checkData(String value, int rowNum, int colNum);

    public RuntimeException newException(int rowNum, int colNum) {
        return new IllegalArgumentException(StrUtil.format("参数错误({}, {})", rowNum, colNum));
    }
}
